﻿using System;
using System.Drawing;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class UserControl_ViewMessages : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (! Page.IsPostBack)
        {
            if(this.Session["TenDangNhap"] != null)
            {
                string tenDangNhap = this.Session["TenDangNhap"].ToString();
                XemDanhSachTinNhan(tenDangNhap);
            }
            else
            {
                this.Response.Redirect(@"~/ThongBao.aspx?ThongBao=Bạn không có quyền truy cập , xin hãy login.");
            }
           

        }
    }
    public void XemDanhSachTinNhan(string tenDangNhap)
    {
        LinQ_RaoVatDataContext db = new LinQ_RaoVatDataContext();
        var messageList = from p in db.TIN_NHANs
                          join c in db.NGUOI_DUNGs on p.MaNguoiGoi equals c.MaNguoiDung
                          join d in db.NGUOI_DUNGs on p.MaNguoiNhan equals d.MaNguoiDung
                          where d.TenDangNhap == tenDangNhap && p.Deleted == false
                          orderby p.ThoiGianNhanTin descending
                          select new
                          {
                              MaTinNhan = p.MaTinNhan,
                              NguoiGui = c.TenDangNhap,
                              TieuDeTinNhan = p.TieuDeTinNhan,
                              ThoiGianNhanTin = p.ThoiGianNhanTin,
                              Readed = p.Readed
                          };        
        if (messageList.Any() == false)
        {
            lblTrangThai.Text = "Hiện không có tin nhắn nào trong hộp thư của bạn !";
        }
        else
        {   
            var tinNhanChuaDoc = from p in db.TIN_NHANs 
			join d in db.NGUOI_DUNGs on p.MaNguoiNhan equals d.MaNguoiDung
	                                where d.TenDangNhap == tenDangNhap && p.Deleted == false && p.Readed == false  
            select p;

            lblTrangThai.Text = "Hộp thư của ban có: " + tinNhanChuaDoc.Count().ToString() + " tin nhắn chưa đọc.";
            gridTinNhan.DataSource = messageList;
            gridTinNhan.DataBind();
            for (int i = 0; i < gridTinNhan.Rows.Count; i++)
            {
                gridTinNhan.Rows[i].BackColor = Color.Snow;
                if (gridTinNhan.Rows[i].Cells[5].Text == "False")
                {
                    gridTinNhan.Rows[i].Font.Bold = true;
                }
            }
        }        
    }
    protected void btnTraLoi_Click(object sender, EventArgs e)
    {
        LinQ_RaoVatDataContext db = new LinQ_RaoVatDataContext();
        CheckBox cb;
        int coutCheck = 0;
        int indexCheck = 0;
        for (int i = 0; i < gridTinNhan.Rows.Count; i++)
        {
            cb = gridTinNhan.Rows[i].Cells[0].FindControl("chkCheckItem") as CheckBox;
            if (cb != null && cb.Checked == true)
            {
                coutCheck++;
                indexCheck = i;
            }
        }
        if (coutCheck == 0)
        {
            lblTrangThai.Text = "Vui lòng chọn tin nhắn trước khi trả lời!";
        }
        if (coutCheck == 1)
        {
            string maTinNhan = gridTinNhan.DataKeys[indexCheck].Value.ToString();
            string nguoiGui = gridTinNhan.Rows[indexCheck].Cells[2].Text;
            Response.Redirect("GuiTinNhan.aspx?MaTinNhan=" + maTinNhan);
        }
        if (coutCheck > 1)
        {
            lblTrangThai.Text = "Vui lòng chỉ chọn một tin nhắn khi trả lời!";
        }        
    }

    protected void btnXoa_Click1(object sender, EventArgs e)
    {
        LinQ_RaoVatDataContext db = new LinQ_RaoVatDataContext();
        bool anyCheck = false;
        for (int i = 0; i < gridTinNhan.Rows.Count; i++)
        {
            CheckBox cb = gridTinNhan.Rows[i].Cells[0].FindControl("chkCheckItem") as CheckBox;
            if (cb != null && cb.Checked == true)
            {
                anyCheck = true;
                int maTinNhan = int.Parse(gridTinNhan.DataKeys[i].Value.ToString());
                TIN_NHAN tinNhan = db.TIN_NHANs.Single(p => p.MaTinNhan == maTinNhan);
                tinNhan.Deleted = true;
                db.SubmitChanges();                
            }
        }
        if (anyCheck == true)
        {
            if(this.Session["TenDangNhap"] != null)
            {
                string tenDangNhap = this.Session["TenDangNhap"].ToString();
                XemDanhSachTinNhan(tenDangNhap);
            }
        }
        else
            lblTrangThai.Text = "Vui lòng chọn tin nhắn trước khi xóa!";
    }

    protected void ddlSapXep_SelectedIndexChanged(object sender, EventArgs e)
    {

        if (this.Session["TenDangNhap"] != null)
        {
            string tenDangNhap = this.Session["TenDangNhap"].ToString();
            XemDanhSachTinNhan(tenDangNhap);


            if (ddlTangGiam.Items[ddlTangGiam.SelectedIndex].Text == "Tăng Dần")
                if (ddlSapXep.Items[ddlSapXep.SelectedIndex].Text == "Tên Người Gửi")
                {
                    LinQ_RaoVatDataContext db = new LinQ_RaoVatDataContext();
                    var messageList = from p in db.TIN_NHANs
                                      join c in db.NGUOI_DUNGs on p.MaNguoiGoi equals c.MaNguoiDung
                                      join d in db.NGUOI_DUNGs on p.MaNguoiNhan equals d.MaNguoiDung
                                      where d.TenDangNhap == tenDangNhap && p.Deleted == false
                                      orderby c.TenDangNhap ascending
                                      select new
                                      {
                                          MaTinNhan = p.MaTinNhan,
                                          NguoiGui = c.TenDangNhap,
                                          TieuDeTinNhan = p.TieuDeTinNhan,
                                          ThoiGianNhanTin = p.ThoiGianNhanTin,
                                          Readed = p.Readed
                                      };
                    if (messageList.Any() == true)
                    {
                        lblTrangThai.Text = "Hộp thư của ban có: " + messageList.Count().ToString() + " tin nhắn.";
                        gridTinNhan.DataSource = messageList;
                        gridTinNhan.DataBind();
                    }
                }
            if (ddlTangGiam.Items[ddlTangGiam.SelectedIndex].Text == "Giảm Dần")
                if (ddlSapXep.Items[ddlSapXep.SelectedIndex].Text == "Tên Người Gửi")
                {
                    LinQ_RaoVatDataContext db = new LinQ_RaoVatDataContext();
                    var messageList = from p in db.TIN_NHANs
                                      join c in db.NGUOI_DUNGs on p.MaNguoiGoi equals c.MaNguoiDung
                                      join d in db.NGUOI_DUNGs on p.MaNguoiNhan equals d.MaNguoiDung
                                      where d.TenDangNhap == tenDangNhap && p.Deleted == false
                                      orderby c.TenDangNhap descending
                                      select new
                                      {
                                          MaTinNhan = p.MaTinNhan,
                                          NguoiGui = c.TenDangNhap,
                                          TieuDeTinNhan = p.TieuDeTinNhan,
                                          ThoiGianNhanTin = p.ThoiGianNhanTin,
                                          Readed = p.Readed
                                      };
                    if (messageList.Any() == true)
                    {
                        lblTrangThai.Text = "Hộp thư của ban có: " + messageList.Count().ToString() + " tin nhắn.";
                        gridTinNhan.DataSource = messageList;
                        gridTinNhan.DataBind();
                    }
                }
            if (ddlTangGiam.Items[ddlTangGiam.SelectedIndex].Text == "Tăng Dần")
                if (ddlSapXep.Items[ddlSapXep.SelectedIndex].Text == "Ngày Gửi")
                {
                    LinQ_RaoVatDataContext db = new LinQ_RaoVatDataContext();
                    var messageList = from p in db.TIN_NHANs
                                      join c in db.NGUOI_DUNGs on p.MaNguoiGoi equals c.MaNguoiDung
                                      join d in db.NGUOI_DUNGs on p.MaNguoiNhan equals d.MaNguoiDung
                                      where d.TenDangNhap == tenDangNhap && p.Deleted == false
                                      orderby p.ThoiGianNhanTin ascending
                                      select new
                                      {
                                          MaTinNhan = p.MaTinNhan,
                                          NguoiGui = c.TenDangNhap,
                                          TieuDeTinNhan = p.TieuDeTinNhan,
                                          ThoiGianNhanTin = p.ThoiGianNhanTin,
                                          Readed = p.Readed
                                      };
                    if (messageList.Any() == true)
                    {
                        lblTrangThai.Text = "Hộp thư của ban có: " + messageList.Count().ToString() + " tin nhắn.";
                        gridTinNhan.DataSource = messageList;
                        gridTinNhan.DataBind();
                    }
                }
            if (ddlTangGiam.Items[ddlTangGiam.SelectedIndex].Text == "Giảm Dần")
                if (ddlSapXep.Items[ddlSapXep.SelectedIndex].Text == "Ngày Gửi")
                {
                    LinQ_RaoVatDataContext db = new LinQ_RaoVatDataContext();
                    var messageList = from p in db.TIN_NHANs
                                      join c in db.NGUOI_DUNGs on p.MaNguoiGoi equals c.MaNguoiDung
                                      join d in db.NGUOI_DUNGs on p.MaNguoiNhan equals d.MaNguoiDung
                                      where d.TenDangNhap == tenDangNhap && p.Deleted == false
                                      orderby p.ThoiGianNhanTin descending
                                      select new
                                      {
                                          MaTinNhan = p.MaTinNhan,
                                          NguoiGui = c.TenDangNhap,
                                          TieuDeTinNhan = p.TieuDeTinNhan,
                                          ThoiGianNhanTin = p.ThoiGianNhanTin,
                                          Readed = p.Readed
                                      };
                    if (messageList.Any() == true)
                    {
                        lblTrangThai.Text = "Hộp thư của ban có: " + messageList.Count().ToString() + " tin nhắn.";
                        gridTinNhan.DataSource = messageList;
                        gridTinNhan.DataBind();
                    }
                }
        }
    }
    
    protected void chkCheckItem_CheckedChanged(object sender, EventArgs e)
    {
        for (int i = 0; i < gridTinNhan.Rows.Count; i++)
        {
            CheckBox cb = gridTinNhan.Rows[i].Cells[0].FindControl("chkCheckItem") as CheckBox;
            if (cb != null && cb.Checked == true)
            {
                gridTinNhan.Rows[i].BackColor = Color.LightSteelBlue;
            }
            else
                gridTinNhan.Rows[i].BackColor = Color.Snow;
        }
    }
    protected void gridTinNhan_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gridTinNhan.PageIndex = e.NewPageIndex;

          if(this.Session["TenDangNhap"] != null)
            {
                string tenDangNhap = this.Session["TenDangNhap"].ToString();
                XemDanhSachTinNhan(tenDangNhap);
            }
            else
            {
                this.Response.Redirect(@"~/ThongBao.aspx?ThongBao=Bạn không có quyền truy cập , xin hãy login.");
            }
      
    }
}
